package com.zdpx.pxframework.log.annotations;

import com.zdpx.pxframework.log.enums.OperateTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


/**
 * 日志注解
 *
 * @Description:
 * @Author: Cheng XiaoXiao
 * @Date: 2022/5/23 11:31
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface OperateLog {

    /**
     * 操作对应模块
     *
     * @return 为空时，会尝试读取 {@link Api#value()} 属性
     */
    String module() default "";

    /**
     * 操作名
     *
     * @return 为空时，会尝试读取 {@link ApiOperation#value()} 属性
     */
    String name() default "";

    /**
     * 操作分类
     */
    OperateTypeEnum type() default OperateTypeEnum.CREATE;

    // ========== 开关字段 ==========

    /**
     * 是否记录操作日志
     */
    boolean enable() default true;

    /**
     * 是否记录方法参数
     */
    boolean logArgs() default true;

    /**
     * 是否记录方法结果的数据
     */
    boolean logResultData() default true;
}
